﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio;
using System.IO;

namespace Presentacion
{
    public partial class SubirArchivo : System.Web.UI.Page
    {
        public static int ModificarId { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            LoadDropDownList1();
            if (!Page.IsPostBack)
                gvMostrar(sender, e);
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (!Page.IsValid)
                return;
            AccesoLogica negocio = new AccesoLogica();
            string Titulo = TextBox1.Text;
            int TipoTextoId=Convert.ToInt32(DropDownList1.SelectedValue);
            string Descripcion = TextBox2.Text;
            int EdadDesde = Convert.ToInt32(DropDownList2.SelectedValue);
            int EdadHasta = Convert.ToInt32(DropDownList3.SelectedValue);
            bool Anonimo=false;
            bool Contacto=false;
            if (CheckBox1.Checked) { Anonimo=true; }
            if (CheckBox2.Checked) { Contacto = true; }
            
            int UsuarioId = 1;
            if (FileUpload1.HasFile)
            {
                try
                {
                    if (FileUpload1.PostedFile.ContentType == "application/pdf")
                    {
                        string pdf = Path.GetFileName(FileUpload1.FileName);
                        FileUpload1.SaveAs(Server.MapPath("~/temp/") + pdf);
                        string rutapdf = Server.MapPath("~/temp/" + pdf);
                        string Nombre = Path.GetFileName(rutapdf);
                        string Tipo = "application/pdf";
                        Byte[] Datos = AccesoLogica.convertirPDF(Nombre, rutapdf);
                        foreach (var f in Directory.GetFiles(Server.MapPath("~/temp/")))
                                                        File.Delete(f);
                        int Archivo = 0;
                        if (Datos != null) { Archivo = 1; }

                        if (Archivo>0)
                        {
                            if (ModificarId == 0)
                            {
                                int resultado = negocio.InsertArchivoTexto(Titulo, TipoTextoId, Nombre, Tipo, Datos,
                                UsuarioId, Descripcion, EdadDesde, EdadHasta, Anonimo, Contacto);
                                if (resultado > 0)
                                    Label1.Text = "Nuevo Registro Agregado Satisfactoriamente.";
                                else
                                    Label1.Text = "Registro no se agregó correctamente";
                                negocio = null;
                                gvMostrar(sender, e);
                            }
                            else
                            {
                                int resultado = negocio.UpdateArchivoTexto(ModificarId, Titulo, TipoTextoId, Nombre, Tipo, Datos,
                                UsuarioId, Descripcion, EdadDesde, EdadHasta, Anonimo, Contacto);
                                if (resultado > 0)
                                    Label1.Text = "Registro Modificado Satisfactoriamente.";
                                else
                                    Label1.Text = "Registro no se modificó correctamente";
                                negocio = null;
                                ModificarId = 0;
                                gvMostrar(sender, e);
                            }
                            
                        }
                        else
                            Label1.Text = "Estado: Error al intentar almacenar el archivo pdf";

                    }
                    else
                    {
                        Label1.Text = "Estado: Solo se aceptan archivos .PDF";
                    }
                }
                catch (Exception ex)
                {
                    Label1.Text = "Estado: El archivo no se pudo almacenar," + ex.Message;
                }
            }
            else
            {
                if (ModificarId == 0)
                { Label1.Text = "No se adjuntó un archivo"; }
            }

            if ((!FileUpload1.HasFile) && (ModificarId != 0)) 
            {
                int resultado = negocio.UpdateArchivoTexto2(ModificarId, Titulo, TipoTextoId,
                                UsuarioId, Descripcion, EdadDesde, EdadHasta, Anonimo, Contacto);
                if (resultado > 0)
                    Label1.Text = "Registro Modificado Satisfactoriamente.";
                else
                    Label1.Text = "Registro no se modificó correctamente";
                negocio = null;
                ModificarId = 0;
                gvMostrar(sender, e);
            }
            
        }

        private void LoadDropDownList1()
        {
            DropDownList1.DataSource = AccesoLogica.ObtenerTipoTexto();
            DropDownList1.DataTextField = "Descripcion";
            DropDownList1.DataValueField = "TipoTextoId";
            DropDownList1.DataBind();

        }

        protected void gvMostrar(object sender, EventArgs e)
        {
            GridView1.DataSource = AccesoLogica.ObtenerArchivo();
            GridView1.DataBind();
            BorrarCampos();
        }

        protected void GridView_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
        {
            AccesoLogica negocio = new AccesoLogica();
            int index = Convert.ToInt32(e.CommandArgument);
            int value = AccesoLogica.ObtenerInt(index,0);
            if (e.CommandName == "Delete")
            {
                int resultado = negocio.DeleteArchivo(value);
                if (resultado > 0)
                {
                    Label1.Text = "Registro Borrado Satisfactoriamente.";
                    GridView1.DeleteRow(index);
                    GridView1.DataSource = AccesoLogica.ObtenerArchivo();
                    GridView1.DataBind();
                }
                else
                    Label1.Text = "Registro no borrado";
                negocio = null;

            }
            if (e.CommandName == "Update")
            {
                TextBox1.Text = AccesoLogica.ObtenerString(index,1);
                DropDownList1.SelectedValue = AccesoLogica.ObtenerInt(index,2).ToString();
                TextBox2.Text = AccesoLogica.ObtenerString(index,7);
                DropDownList2.Text = AccesoLogica.ObtenerInt(index,8).ToString();
                DropDownList3.Text = AccesoLogica.ObtenerInt(index,9).ToString();
                CheckBox1.Checked = false;
                CheckBox2.Checked = false;
                if (AccesoLogica.ObtenerBool(index,10) == true) {CheckBox1.Checked = true;}
                if (AccesoLogica.ObtenerBool(index,11) == true) { CheckBox1.Checked = true; }
                ModificarId = value;
            }
        }

        protected void BorrarCampos()
        {
            TextBox1.Text = TextBox2.Text = "";
            DropDownList1.SelectedValue = "1";
            DropDownList2.SelectedValue=DropDownList3.SelectedValue="5";
            CheckBox1.Checked = false;
            CheckBox2.Checked = false;
        }

        protected void GridView_SelectedIndexChanged(object sender, EventArgs e)
        {

        }


        protected void GridView_RowDeleting(object sender, EventArgs e)
        {

        }

        protected void GridView_RowUpdating(object sender, EventArgs e)
        {

        }

    }
 }
